const { ForbiddenError, ServerError, UnknownError, UploadError } = require("../../utils/errors");

module.exports = (err, req, res, next) => {
    // jwt认证错误
    if (err.name === "JsonWebTokenError" && err.message === "invalid token" || err.name === "TokenExpiredError") {
        const body = new ForbiddenError("未登录，或登录已过期").toResponseJSON();
        res.send(body);
        return;
    }

    // 自定义错误
    if (err instanceof ServerError) {
        res.send(err.toResponseJSON());
        return;
    }

    // 上传文件错误
    if (err.name === "MulterError") {
        res.send(new UploadError(err.message).toResponseJSON());
        return;
    }

    // 未知错误
    res.send(new UnknownError().toResponseJSON());
    console.log("错误处理中间件>>> ", err);
}